package com.kzj.service;

import com.kzj.domain.Administrator;
import com.baomidou.mybatisplus.extension.service.IService;
import com.kzj.domain.Student;
import com.kzj.domain.Teacher;
import com.kzj.domain.dto.ChangePasswordDTO;
import com.kzj.domain.dto.UserLoginDTO;
import com.kzj.domain.vo.ForbiddenVO;
import com.kzj.global.re.Result;
import io.swagger.models.auth.In;
import org.springframework.transaction.annotation.Transactional;

import java.time.LocalDateTime;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author kzj
 * @since 2023-12-01
 */
@Transactional
public interface AdministratorService extends IService<Administrator> {

    Result login(UserLoginDTO userLoginDTO);
    Result update(Administrator administrator);
    Result changePassword(ChangePasswordDTO changePasswordDTO);
    Result addAdministrator(Administrator administrator);

    Result getAllAcademy();

    Result getMajorByAcademyId(String academyId);

    Result getClassByMajorIdAndPeriod(String majorId, Integer period);

    Result getStudentByStudentClassId(String studentClassId);

    Result getStudentByMajorId(String majorId);

    Result getStudentById(String studentId);

    Result addStudent(Student student);

    Result addTeacher(Teacher teacher);

    Result getStudentByAcademyId(String academyId);

    Result getStudentSchedule(String studentId, Integer term);

    Result getTeacherById(String teacherId);

    Result getTeacherSchedule(String teacherId, String curriculumTime);

    Result getStudentCurrentTermSchedule(String studentId);

    Result getStudentNextTermSchedule(String studentId);

    Result getTeacherCurrentTermSchedule(String teacherId);

    Result getTeacherNextTermSchedule(String teacherId);

    Result forbiddenStudent(ForbiddenVO forbiddenVO);

    Result forbiddenTeacher(ForbiddenVO forbiddenVO);

    Result stopRobClasses();
    Result stopRobClasses(LocalDateTime dateTime);

    Result startNextTermRobClasses();

    Result startNextTermRobClasses(LocalDateTime dateTime);

    Result arrangeExamination();

    Result arrangeExamination(LocalDateTime dateTime);

    Result getTeacherByAcademyId(String academyId);

    Result getAllTeacher();

    Result getCurrentTermScheduleList(String teacherId);

    Result getNextTermScheduleList(String teacherId);

    Result updateStudentInfo(Student student);

    Result updateTeacherInfo(Teacher teacher);


}
